<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="STYLESHEET" type="text/css" href="./styles.css" /></head>
<body>

<!-- ===================================================================== -->
<!-- = XML information goes here                                         = -->
<!-- ===================================================================== -->
<lzelement title="XML-RPC">
    <lztier>RPC Components</lztier>
    <lzcategory>RPC</lzcategory>
    <lzshortdesc>
        XML-RPC implementation.
    </lzshortdesc>
    <lztag>rpc/xmlrpc.xml</lztag>
</lzelement>

<p>XML-RPC is simple spec that describes how to invoke a remote operation using
XML over HTTP. Laszlo XML-RPC is part of <a href="${dguide}rpc.html">Laszlo
RPC</a> and shares many of the same APIs and concept. Laszlo RPC includes <a
href="${dguide}rpc-soap.html">SOAP</a> and <a
href="${dguide}rpc-javarpc.html">JavaRPC</a>. For more information on XML-RPC,
go to <a href="http://www.xmlrpc.com/">XML-RPC.com</a></p>

<p>Most Laszlo RPC objects like JavaRPC and SOAP will set function stubs in the
proxy property during load based on methods described by a class (for JavaRPC)
or on a service description (using a WSDL in SOAP). Remotecall declarations
refer to these function stubs and any remotecalls not pointing to a function
stub that doesn't exist will generate an error/warning. In &lt;xmlrpc&gt;,
function stubs are create based on remotecall declarations. Note that XML-RPC
use dot notation for their operation names. Because that will conflict with the
view system's notation, it's suggested that remotecalls are explictly named.</p>

<example>
&lt;canvas debug="true" height="400"&gt;

    &lt;debug x="10" y="40" width="450" height="350" /&gt;
    
    &lt;xmlrpc name="meerkat"
            service="http://www.oreillynet.com/meerkat/xml-rpc/server.php"&gt;

        &lt;method event="onload"&gt;
            Debug.write('meerkat XML-RPC service loaded');
            Debug.write('proxy:');
            Debug.inspect(this.proxy);
        &lt;/method&gt;

        &lt;method event="ondata" args="data"&gt;
            Debug.write('got data:', data);
        &lt;/method&gt;

        &lt;method event="onerror" args="error"&gt;
            Debug.write('onerror:', error);
        &lt;/method&gt;

        &lt;remotecall name="gc" funcname="meerkat.getCategories" /&gt;

    &lt;/xmlrpc&gt;

    &lt;button text="getCategories" x="10" y="10"&gt;
        &lt;method event="onclick"&gt;
            Debug.write('getting categories...');
            meerkat.gc.invoke()
        &lt;/method&gt;
    &lt;/button&gt;

&lt;/canvas&gt;
</example>

<seealso>
<classes><a href="${reference}rpc.html">rpc</a></classes>
<classes><a href="${reference}javarpc.html">javarpc</a></classes>
<classes><a href="${reference}soap.html">soap</a></classes>
<classes><a href="${reference}remotecall.html">remotecall</a></classes>
<a href="${dguide}rpc.html">Developer's Guide: RPC chapter</a>
<a href="${dguide}rpc-xmlrpc.html">Developer's Guide: XMLRPC chapter</a>
</seealso>

</body>
</html>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
